#include <bits/stdc++.h>
using namespace std;
long long zh[2005]; // zh[i]表示n个a分成i组的方案数
const long long mod = 1000000007;

int main() {
  long long n;
  long long ans = 0;
  long long jc = 1;
  cin >> n;
  zh[1] = 1;
  //     定义 第二类Stirling数表示把n nn个不同的数划分为m
  //   mm个集合的方案数，要求不能为空集，写作S(n, m) S(n, m) S(n, m)

  for (int i = 2; i <= n; i++) { // 对i个a计算zh[j]
    for (int j = i; j >= 1; j--) {
      // 把ai放进前边的j个组合里有zh[j]*j种方案，
      // 单独做为一个集合有zh[j-1]种方案
      zh[j] = zh[j] * j + zh[j - 1];
      zh[j] %= mod;
    }
  }
  for (int i = 1; i <= n; i++) {
    jc *= i; // 阶乘为i个集合的全排列
    jc %= mod;
    ans += jc * zh[i];
    ans %= mod;
  }
  cout << ans << endl;
  return 0;
}